#include <stdio.h>

#define NONE         "\033[m"
#define RED          "\033[0;32;31m"
#define RED_WINK     "\033[5;32;31m"
#define LIGHT_RED    "\033[1;31m"
#define GREEN        "\033[0;32;32m"
#define LIGHT_GREEN  "\033[1;32m"
#define BLUE         "\033[0;32;34m"
#define LIGHT_BLUE   "\033[1;34m"
#define DARY_GRAY    "\033[1;30m"
#define CYAN         "\033[0;36m"
#define LIGHT_CYAN   "\033[1;36m"
#define PURPLE       "\033[0;35m"
#define LIGHT_PURPLE "\033[1;35m"
#define BROWN        "\033[0;33m"
#define YELLOW       "\033[0;33m"
#define LIGHT_GRAY   "\033[0;37m"
#define WHITE        "\033[1;37m"

#define API_CALL_LOG(...) \
	{ printf( GREEN "<CALL> %s:%d %s", __FILE__, __LINE__, __FUNCTION__ ); printf( "("__VA_ARGS__ ); printf( ")" NONE "\n" ); }

#define API_WARN_LOG(...) \
	{ printf( YELLOW "<WARNING!> %s:%d %s", __FILE__, __LINE__, __FUNCTION__ ); printf( "("__VA_ARGS__ ); printf( ")" NONE "\n" ); }

#define API_ERR_LOG(...) \
	{ printf( RED "<ERROR!!!> %s:%d %s", __FILE__, __LINE__, __FUNCTION__ ); printf( "("__VA_ARGS__ ); printf( ")" NONE "\n" ); }

#define API_FATAL_LOG(...) \
	{ printf( RED_WINK "<FATAL!!!> %s:%d %s", __FILE__, __LINE__, __FUNCTION__ ); printf( "("__VA_ARGS__ ); printf( ")" NONE "\n" ); }


int main()
{
	API_CALL_LOG();
	API_WARN_LOG();
	API_ERR_LOG();
	API_FATAL_LOG();
    return 0;
}


